package cn.com.headfree.drafts.service;

import java.util.List;
import java.util.Map;

import cn.com.headfree.entity.*;
import com.gta.edu.sdk.common.dto.Page;

import cn.com.headfree.entity.isc.User;
import cn.com.headfree.vo.EachTypeDetailVo;
import cn.com.headfree.vo.SysDictionaryInfoVo;
import cn.com.headfree.vo.complex.TAcadeAchiveInfoVo;
import cn.com.headfree.vo.complex.TPatentInfoVo;
import cn.com.headfree.vo.complex.TProjAchieveInfoVo;
import cn.com.headfree.vo.complex.TStandInfoVo;
import cn.com.headfree.vo.complex.TTecInnovInfoVo;
import cn.com.headfree.vo.complex.TTecManInnovVo;
import cn.com.headfree.vo.drafts.DraftsListVo;

public interface IDraftsService {

	String addBaseInfo(TEmpBaseInfo baseInfo, User user) throws Exception;

	TEmpBaseInfo getBaseInfoById(String id);

	TEmpBaseInfo getBaseInfoByErpNo(String erpNo);



	String addYearEffect(TYearEffectInfo yearEffectInfo, User user) throws Exception;

	TYearEffectInfo getYearEffectById(String id);

	List<TYearEffectInfo> getYearEffectByErpNo(String erpNo);

	void findPageYearEffectByCondi(Page<TYearEffectInfo> page,TYearEffectInfo tYearEffectInfo);



	String addEducateInfo(TEducateInfo tEducateInfo, User user) throws Exception;

	TEducateInfo getEducateInfoById(String id);

	List<TEducateInfo> getEducateInfoByErpNo(String erpNo,String isCountEduc);

	void findPageEducateInfoByCondi(Page<TEducateInfo> page,TEducateInfo tEducateInfo);



	String addProTecInfo(TProTecInfo tProTecInfo, User user) throws Exception;

	TProTecInfo getProTecInfoById(String id);

	List<TProTecInfo> getProTecInfoByErpNo(String erpNo);

	void findPageProTecInfoByCondi(Page<TProTecInfo> page,TProTecInfo tProTecInfo);



	String addSkillLevelInfo(TSkillLevelInfo tSkillLevelInfo, User user) throws Exception;

	TSkillLevelInfo getSkillLevelInfoById(String id);

	List<TSkillLevelInfo> getSkillLevelInfoByErpNo(String erpNo);

	void findPageSkillLevelInfoByCondi(Page<TSkillLevelInfo> page,TSkillLevelInfo tSkillLevelInfo);



	String addExpertTitleInfo(TExpertTitleInfo tExpertTitleInfo, User user) throws Exception;

	TExpertTitleInfo getExpertTitleInfoById(String id);

	List<TExpertTitleInfo> getExpertTitleInfoByErpNo(String erpNo);

	void findPageExpertTitleInfoByCondi(Page<TExpertTitleInfo> page,TExpertTitleInfo tExpertTitleInfo);


	//学术成果
	String addAcadeAchiveInfo(TAcadeAchiveInfo tAcadeAchiveInfo, User user) throws Exception;

	TAcadeAchiveInfoVo getAcadeAchiveInfoById(String id);

	List<TAcadeAchiveInfoVo> getAcadeAchiveInfoByErpNo(String erpNo);

	void findPageAcadeAchiveInfoByCondi(Page<TAcadeAchiveInfoVo> page, TAcadeAchiveInfo tAcadeAchiveInfo);


	//标准制定
	String addStandInfo(TStandInfo tStandInfo, User user) throws Exception;

	TStandInfoVo getStandInfoById(String id);

	List<TStandInfoVo> getStandInfoByErpNo(String erpNo);

	void findPageStandInfoByCondi(Page<TStandInfoVo> page, TStandInfo tStandInfo);


	//专利
	String addPatentInfo(TPatentInfo tPatentInfo, User user) throws Exception;

	TPatentInfoVo getPatentInfoById(String id);

	List<TPatentInfoVo> getPatentInfoByErpNo(String erpNo);

	void findPagePatentInfoByCondi(Page<TPatentInfoVo> page, TPatentInfo tPatentInfo);


	//技艺革新
	String addTecInnovInfo(TTecInnovInfo tTecInnovInfo, User user) throws Exception;

	TTecInnovInfoVo getTecInnovInfoById(String id);

	List<TTecInnovInfoVo> getTecInnovInfoByErpNo(String erpNo);

	void findPageTecInnovInfoByCondi(Page<TTecInnovInfoVo> page, TTecInnovInfo tTecInnovInfo);



	String addContestInfo(TContestInfo tContestInfo, User user) throws Exception;

	TContestInfo getContestInfoById(String id);

	List<TContestInfo> getContestInfoByErpNo(String erpNo);

	void findPageContestInfoByCondi(Page<TContestInfo> page,TContestInfo tContestInfo);


	//科技创新
	String addTecManInnov(TTecManInnov tTecManInnov, User user) throws Exception;

	TTecManInnovVo getTecManInnovById(String id);

	List<TTecManInnovVo> getTecManInnovByErpNo(String erpNo);

	void findPageTecManInnovByCondi(Page<TTecManInnovVo> page, TTecManInnov tTecManInnov);



	String addHonorInfo(THonorInfo tHonorInfo, User user) throws Exception;

	THonorInfo getHonorInfoById(String id);

	List<THonorInfo> getHonnorInfoByErpNo(String erpNo);

	void findPageHonorInfoByCondi(Page<THonorInfo> page,THonorInfo tHonorInfo);



	String addWorkExpInfo(TWorkExpInfo tWorkExpInfo, User user) throws Exception;

	TWorkExpInfo getWorkExpInfoById(String id);

	List<TWorkExpInfo> getWorkExpInfoByErpNo(String erpNo);

	void findPageWorkExpInfoByCondi(Page<TWorkExpInfo> page,TWorkExpInfo tWorkExpInfo);



	String addContiStudyInfo(TContiStudyInfo tContiStudyInfo, User user) throws Exception;

	TContiStudyInfo getContiStudyInfoById(String id);

	List<TContiStudyInfo> getContiStudyInfoByErpNo(String erpNo);

	void findPageContiStudyInfoByCondi(Page<TContiStudyInfo> page,TContiStudyInfo tContiStudyInfo);



	String addSdtTutorPrentInfo(TSdtTutorPrentInfo tSdtTutorPrentInfo, User user) throws Exception;

	TSdtTutorPrentInfo getSdtTutorPrentInfoById(String id);

	List<TSdtTutorPrentInfo> getSdtTutorPrentInfoByErpNo(String erpNo);

	void findPageSdtTutorPrentInfoByCondi(Page<TSdtTutorPrentInfo> page,TSdtTutorPrentInfo tSdtTutorPrentInfo);


	//项目课题成果
	String addProjAchieveInfo(TProjAchieveInfo tProjAchieveInfo, User user) throws Exception;

	TProjAchieveInfoVo getProjAchieveInfoById(String id);

	List<TProjAchieveInfoVo> getProjAchieveInfoByErpNo(String erpNo);

	void findPageProjAchieveInfoByCondi(Page<TProjAchieveInfoVo> page,TProjAchieveInfo tProjAchieveInfo);



	List<TMouldInfo> getMouldInfoList(TMouldInfo tMouldInfo);

	void getEachTypeDetailList(EachTypeDetailVo detail, Page<EachTypeDetailVo> page);

	List<SysDictionaryInfoVo> getAttendanceUserTypeByValue(String value);


	/****************************************通过数据id判断当前数据是否存在待审核的副本数据********************************/

	List<TYearEffectInfo> getReadyYearEffectById(String id);

	List<TEducateInfo> getReadyEducateInfoById(String id);

	List<TProTecInfo> getReadyProTecInfoById(String id);

	List<TSkillLevelInfo> getReadySkillLevelInfoById(String id);

	List<TExpertTitleInfo> getReadyExpertTitleInfoById(String id);

	List<TAcadeAchiveInfo> getReadyAcadeAchiveInfoById(String id);

	List<TStandInfo> getReadyStandInfoById(String id);

	List<TPatentInfo> getReadyPatentInfoById(String id);

	List<TTecInnovInfo> getReadyTecInnovInfoById(String id);

	List<TContestInfo> getReadyContestInfoById(String id);

	List<TTecManInnov> getReadyTecManInnovById(String id);

	List<THonorInfo> getReadyHonorInfoById(String id);

	List<TWorkExpInfo> getReadyWorkExpInfoById(String id);

	List<TContiStudyInfo> getReadyContiStudyInfoById(String id);

	List<TSdtTutorPrentInfo> getReadySdtTutorPrentInfoById(String id);

	List<TProjAchieveInfo> getReadyProjAchieveInfoById(String id);
	
	void addPartRank(List<TPartRank> ranks,String id,String type);
	/**
	 * 参与人员修改
	 */
	void updatePartRankData(String itemId,List<TPartRank> list,String itemType);

	void addSdtPrentInfo(TSdtPrentInfo p);
	
	/**
	 * 添加挂职轮岗信息
	 * @author yangwang
	 * @param tRotationInfo
	 * @param user
	 * @return String
	 *  */
	String addRotationInfo(TRotationInfo tRotationInfo, User user) throws Exception;
	/**
	 * 根据id获取挂职轮岗信息
	 * @author yangwang
	 * @param id
	 * @return TRotationInfo
	 *  */
	TRotationInfo getRotationInfoById(String id);
	/**
	 * 获取挂职轮岗列表信息
	 * @author yangwang
	 * @param tRotationInfo
	 * @return List<TRotationInfo>
	 *  */
	List<TRotationInfo> getListRotationInfoCondi(TRotationInfo tRotationInfo);
	/**
	 * 获取挂职轮岗分页信息
	 * @author yangwang
	 * @param page
	 * @param tRotationInfo
	 *  */
	void findPageRotationInfoByCondi(Page<TRotationInfo> page,TRotationInfo tRotationInfo);
	/**
	 * 获取挂职轮岗待审核信息
	 * @author yangwang
	 * @param id
	 * @return List<TRotationInfo>
	 *  */
	List<TRotationInfo> getReadyRotationInfoById(String id);
	
	List<TSdtPrentInfo> getTSdtPrentInfoListById(String id);
	
	//徒弟所获奖项添加
		void addSdtAwardInfo(TSdtAward tSdtAward);

		void updateEducateInfoYes(TEducateInfo educateInfo, User user);

		void updateContiStudyInfo(TContiStudyInfo contiStudyInfo, User user);

		void updateProTecInfo(TProTecInfo proTecInfo, User user);

		void updateTSkillLevelInfo(TSkillLevelInfo skillLevelInfo, User user);

		void updateTExpertTitleInfo(TExpertTitleInfo expertTitleInfo, User user);

		void updateTAcadeAchiveInfo(TAcadeAchiveInfo acadeAchiveInfo, User user);

		void updateTStandInfo(TStandInfo standInfo, User user);

		void updateTPatentInfo(TPatentInfo patentInfo, User user);

		void updateTTecInnovInfo(TTecInnovInfo tecInnovInfo, User user);

		void updateTContestInfo(TContestInfo contestInfo, User user);

		void updateTTecManInnov(TTecManInnov tecManInnov, User user);

		void updateTHonorInfo(THonorInfo honorInfo, User user);

		void updateTProjAchieveInfo(TProjAchieveInfo projAchieveInfo, User user);

		void updateTSdtTutorPrentInfo(TSdtTutorPrentInfo sdtTutorPrentInfo, User user);

		void deleteTSdtAwardBySdtTdId(String id);

		void deleteTSdtPrentInfoByCondition(String orgId, String id);

		void updateTWorkExpInfo(TWorkExpInfo workExpInfo, User user);

		void updateTRotationInfo(TRotationInfo rotationInfo, User user);

		void deleteMes(String businessId, String tabName);

		Map<String,Long> integrityAnalysis(List<TMouldInfo> list,String erpNo);

		void addDraftsList(DraftsListVo draftsList, User user);

		void getDraftsListPage(Page<DraftsListVo> page,String erpNo);

		void deleteDraftsListByBusinessId(String businessId);
		
		void addGrowthPlan(TGrowthPlan tGrowthPlan, User user);

		void getPersonalPageGrowthPlanByErpNo(Page<TGrowthPlan> page, String erpNo);

		TGrowthPlan getGrowthPlanById(String id);

		void updateGrowthPlan(TGrowthPlan tGrowthPlan, User user);

	void addEmployeeMobility(TEmployeeMobility employeeMobility, User user);
	void findPageEmployeeMobilityByCondi(Page<TEmployeeMobility> page, TEmployeeMobility employeeMobility);
	TEmployeeMobility getEmployeeMobilityById(String id);
	void updateEmployeeMobility(TEmployeeMobility employeeMobility);
	/**
	 * 获取技术标准信息
	 * @author pengmengzhi
	 * @param tecStandardInfo
	 * @return List<TRotationInfo>
	 *  */
	void findPageTecStandardInfoByCondi(Page<TTecStandardInfo> page, TTecStandardInfo tecStandardInfo);
	void addTecStandardInfo(TTecStandardInfo tecStandardInfo,User user);
	TTecStandardInfo getTecStandardInfoById(String id);
	int updateTecStandardInfo(TTecStandardInfo tecStandardInfo,User user);

}
